// 导入自定义datetime模块
const datetime = require('../../moduls/datetime')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    dayDatas: {},
    birthdayAndAnniversary: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    let {y, m, d} = options
    let res = datetime.toLunar(y * 1, m * 1, d * 1, true)
    this.setData({ dayDatas: res })
    
    let data = await  wx.cloud.callFunction({
      name: 'crawler',
      data: {
        m,
        d
      }
    })
    // 关闭loading 
    wx.hideLoading()
    //处理数抓并保存到页面变量(data)
    //如果返回的数据超过15条，则取最后15条。
    let lists = data.result.length > 15 ? data.result.slice(data.result.length - 15) : data.result
    // 数据处理
    let resultArr = []
    lists.forEach(item => {
      
      resultArr.push(item.year + '\u0020' + item.title)
    }) 
    this.setData({
      historyLists: resultArr
    })

    let holidayCountdown = datetime.holidayCountdown(y, m, d)
    let holidayLists = []
    holidayCountdown.forEach(item => {
      // holidayLists.push(`离${item.name}(${item.day})还有${item.days}天`)
      if (item.days > 0) {
        holidayLists.push(`离${item.name}(${item.day})还有${item.days}天`);
      }
    })
    this.setData({
      holidayLists
    })

    // 查询进入当前页面该日期的生日与纪念日
    /** 
     * 1. 若lunar = true，则以农历的月和日与数据库中的date值(mm-dd)进行比较，相同的筛选出来。
     * 2. 若lunar = false，则以公历的月和日与数据库中的date值(mm-dd)进行比较，相同的筛选出来。
     * 1 or 2
    */
   let lunarMD = (this.data.dayDatas.lunar.month < 10 ? '0' + this.data.dayDatas.lunar.month : this.data.dayDatas.lunar.month) + '-' + (this.data.dayDatas.lunar.day < 10 ? '0' + this.data.dayDatas.lunar.day : this.data.dayDatas.lunar.day)
   let solarMD = (this.data.dayDatas.month < 10 ? '0' + this.data.dayDatas.month : this.data.dayDatas.month) + '-' + (this.data.dayDatas.day < 10 ? '0' + this.data.dayDatas.day : this.data.dayDatas.day)
   
    // // 1. 初始化
    // const db = wx.cloud.database()
    // const _ = db.command
    // let days = db.collection('days')
    // // 2. 查询数据
    // let birthdayData =await days.where(
    //   _.or([
    //     {
    //       lunar: true,
    //       date: new db.RegExp({
    //         regexp: "^\\d{4}-" + lunarMD + "$"
    //       })
    //     },
    //     {
    //       lunar: false,
    //       date: new RegExp("^\\d{4}-" + solarMD + "$")
    //     }
    //   ])
    // )
    // .field({
    //   date: true,
    //   name: true,
    //   isBirthday: true,
    //   lunar: true,
    //   _id: false,
    // })
    // .get()
    // // console.log(birthdayData) // asycn / await
    // // .then(res => { //promise风格
    // //   console.log(res)
    // // })
    // // 数据处理以备列表渲染与数据绑定
    // let birthdayAndAnniversary = []
    // let year = 0
    // birthdayData.data.forEach(item => {
    //   if (item.isBirthday) {
    //     year = this.data.dayDatas.year - item.date.substr(0, 4) * 1
    //     birthdayAndAnniversary.push(`今天是${item.name} ${year} 周岁的生日`)
    //   } else {
    //     year = this.data.dayDatas.lunar.year - item.date.substr(0, 4) * 1
    //     birthdayAndAnniversary.push(`今天是${item.name} ${year}周年纪念日`)
    //   }
    // })

     // 1. 初始化
    const db = wx.cloud.database()
    const _ = db.command
    const $ = _.aggregate
    let days = db.collection('days')
    let coll = await days.aggregate()  //发起聚合操作
    .project({  // 指定字段传给下雨流水线
      name: true,
      date: true,
      _id: 0,
      isBirthday: 1,
      lunar: 1,
      monthDay: $.substrBytes(['$date', 5, 5])
    })
    .match(   // 根据条件过滤文档/行过滤
      _.or(_.and([{lunar: false},{monthDay: solarMD}]), _.and([{lunar: true},{monthDay: lunarMD}]))
    )
    .project({  //字符过滤
      name: true,
      date: true,
      type: $.cond({
        if: '$isBirthday',
        then: '生日',
        else: '纪念日'
      }),
      year: $.cond({
        if: '$lunar',
        then: $.subtract([this.data.dayDatas.lunar.year, $.year($.dateFromString({ dateString: '$date' }))]),
        else: $.subtract([this.data.dayDatas.year, $.year($.dateFromString({ dateString: '$date' }))])
      })
    })
    .project({
      name: true,
      year: true,
      type:true
    })
    .end()       //结束定义并实际发起聚合提作
    console.log(coll)
    let birthdayAndAnniversary = []
    coll.list.forEach(item => {
      if (item.type == '生日') {
        birthdayAndAnniversary.push(`今天是${item.name} ${item.year} 周岁的生日`)
      } else {
        birthdayAndAnniversary.push(`今天是${item.name} ${item.year} 周年纪念日`)
      }
    })
    this.setData({birthdayAndAnniversary})
  },

 
})